package site.brood.common.core.constant;


/**
 * 通用常量信息
 */
public class Constants
{
    /**
     * UTF-8 字符集
     */
    public static final String UTF8 = "UTF-8";

    /**
     * GBK 字符集
     */
    public static final String GBK = "GBK";

    /**
     * RMI 远程方法调用
     */
    public static final String LOOKUP_RMI = "rmi:";

    /**
     * LDAP 远程方法调用
     */
    public static final String LOOKUP_LDAP = "ldap:";

    /**
     * LDAPS 远程方法调用
     */
    public static final String LOOKUP_LDAPS = "ldaps:";



    /**
     * 外网请求header中token的key
     */
    public static final String OUTTER_HEAD_TOKEN = "Authorization";

    /**
     * 外网请求header中token的value的前缀
     */
    public static final String OUTTER_HEAD_TOKEN_PREFIX = "Bearer ";

    /**
     * jwt秘钥
     */
    public final static String JWT_SECRET = "1234567890abcdefghijklmnopqrstuvwxyz";

    /**
     * jwt中用户id的key
     */
    public final static String JWT_USER_ID = "user_id";

    /**
     * jwt中用户名称的key
     */
    public final static String JWT_USER_NAME = "user_name";

    /**
     * jwt中存user key的key
     * 通过user cache key可从redis中取出用户详情
     */
    public final static String JWT_USER_CACHE_KEY = "user_cache_key";


    /**
     * 登陆token在redis中key的前缀
     */
    public final static String REDIS_LOGIN_TOKEN_KEY_PREFIX = "login_tokens:";

    /**
     * 网关转发后在网络请求header中放用户ID的key
     */
    public static final String INNER_HEADER_USER_ID = "user_id";

    /**
     * 网关转发后在网络请求header中放用户key
     * 以login_tokens:user cache key为key，可在redis中查出用户详情
     */
    public static final String INNER_HEADER_USER_CACHE_KEY = "user_cache_key";

    /**
     * 网关转发后在网络请求header中放用户名称的key
     */
    public static final String INNER_HEADER_USER_NAME = "user_name";

    /**
     * 集群内feign请求在header中放请求来源的key
     */
    public static final String FROM_SOURCE = "from-source";

    /**
     * 集群内feign请求在header中放请求来源的value
     * 标识内网请求
     * 有内部请求标识的请求不会验证权限
     */
    public static final String FROM_SOURCE_INNER = "inner";


    /**
     * 线程池共享map中存用户详情的key
     * 通过此user cache key(补上前缀)可从redis中取出用户详情
     */
    public static final String THREAD_USER_CACHE_KEY = "user_cache_key";

    /**
     * 线程池共享map中存用户id的key
     */
    public static final String THREAD_USER_ID = "user_id";

    /**
     * 线程池共享map中存用户名称的key
     */
    public static final String THREAD_USER_NAME = "user_name";

    /**
     * 线程池共享map中存用户详情的key
     */
    public static final String THREAD_USER = "user";

    /**
     * 鉴权注解(RequiresPermissions)
     * 管理员拥有所有权限标识：*:*:*
     * 一级功能菜单:二级功能菜单:CURD权限(add/edit/remove/list)
     */
    public static final String PERMISSION_ALL = "*:*:*";

    /*
     * 管理员角色权限标识
     */
    public static final String ROLE_SUPER_ADMIN = "admin";

    /**
     * 用户名长度限制
     */
    public static final int USERNAME_MIN_LENGTH = 2;

    public static final int USERNAME_MAX_LENGTH = 20;

    /**
     * 密码长度限制
     */
    public static final int PASSWORD_MIN_LENGTH = 5;

    public static final int PASSWORD_MAX_LENGTH = 20;

    /**
     * 缓存的key 常量
     */
    /**
     * 缓存有效期，默认720（分钟）
     */
    public final static long CACHE_EXPIRATION = 720;

    /**
     * 缓存刷新时间，默认120（分钟）
     */
    public final static long CACHE_REFRESH_TIME = 120;

    /**
     * 权限缓存前缀
     */
    public final static String CACHE_LOGIN_TOKEN_KEY_PREFIX = "login_token:";

    /**
     * 时区
     * 默认取北京时区:东八区
     */
    public final static String TimeZone = "+8";

    /**
     * 日志服务的服务名
     */
    public final static String LOG_SERVICE = "brood-log";

    /**
     * 用户服务的服务名
     */
    public final static String USER_SERVICE = "brood-user";
}
